package br.com.gaspar.mb;

import gov.sefaz.framework.modelo.IBaseBO;
import gov.sefaz.utils.exception.BaseException;
import gov.sefaz.visao.jsf.ManagedBeanBase;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Named;

import br.com.gaspar.bo.iface.IGasparBO;
import br.com.gaspar.entidade.Cidade;
import br.com.gaspar.entidade.Cliente;
import br.com.gaspar.entidade.UF;

@Named("ClienteMB")
@SessionScoped
public class ClienteMB extends ManagedBeanBase<Cliente> {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EJB
	private IGasparBO<Cliente> bo;
	
	@EJB
	private IGasparBO<Cidade> cidadeBO;
	
	private UF uf;
	
	private List<UF> ufs;
	
	private List<Cidade> cidades;
	
	@Override
	protected IBaseBO<Cliente> getFachada() {
		return bo;
	}

	@Override
	protected void criarAntes() throws BaseException {
		entidade = new Cliente();
		super.criarAntes();
	}
	
	@PostConstruct
	@Override
	public void iniciar() {
		super.iniciar();
	}

	public UF getUf() {
		return uf;
	}

	public void setUf(UF uf) {
		this.uf = uf;
	}

	public List<UF> getUfs() {
		return ufs;
	}

	public void setUfs(List<UF> ufs) {
		this.ufs = ufs;
	}

	public List<Cidade> getCidades() {
		return cidades;
	}

	public void setCidades(List<Cidade> cidades) {
		this.cidades = cidades;
	}
	
	
	public void selecionarCidade(AjaxBehaviorEvent abe) throws BaseException{
		setCidades(cidadeBO.buscarTodosPorNamedQuery("Cidade.buscarPorUF", uf.getId()));
	}
	
	@Override
	protected void editarAntes() throws BaseException {
		super.editarAntes();
		setUf(getEntidade().getCidade().getUf());
	}
	
}
